#include "btform.h"
#include "ui_btform.h"



BtForm::BtForm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::BtForm)
{
    ui->setupUi(this);
    ui->lineBox->hide(); //当前和所有的子控件都不显示，也就是不显示这个动画效果

    line1Animal = new QPropertyAnimation(ui->line1, "geometry", this);
    line1Animal->setDuration(1500); // 设置一次动画的持续时间, 动画的过程会在1.5s内完成，时间越小意味着越快
    line1Animal->setKeyValueAt(0, QRect(0, 15, 2, 0));  //0 表示起始状态  QRect(x, y, weight, high) --x,y是相对于父元素的左顶点
    line1Animal->setKeyValueAt(0.5, QRect(0, 0, 2, 17)); // 0.5表示中间状态
    line1Animal->setKeyValueAt(1, QRect(0, 15, 2, 17));  // 1表示结束状态
    line1Animal->setLoopCount(-1); //表示一直演示这个动画效果
    line1Animal->start();  //开始演示这个动画效果

    line2Animal = new QPropertyAnimation(ui->line2, "geometry", this);
    line2Animal->setDuration(1600);
    line2Animal->setKeyValueAt(0, QRect(7, 15, 2, 0));  //0 表示起始状态  QRect(x, y, weight, high)
    line2Animal->setKeyValueAt(0.5, QRect(7, 0, 2, 15)); // 0.5表示中间状态
    line2Animal->setKeyValueAt(1, QRect(7, 15, 2, 15));  // 1表示结束状态
    line2Animal->setLoopCount(-1);
    line2Animal->start();

    line3Animal = new QPropertyAnimation(ui->line3, "geometry", this);
    line3Animal->setDuration(1700);
    line3Animal->setKeyValueAt(0, QRect(14, 15, 2, 0));  //0 表示起始状态  QRect(x, y, weight, high)
    line3Animal->setKeyValueAt(0.5, QRect(14, 0, 2, 15)); // 0.5表示中间状态
    line3Animal->setKeyValueAt(1, QRect(14, 15, 2, 15));  // 1表示结束状态
    line3Animal->setLoopCount(-1);
    line3Animal->start();


    line4Animal = new QPropertyAnimation(ui->line4, "geometry", this);
    line4Animal->setDuration(1800);
    line4Animal->setKeyValueAt(0, QRect(21, 15, 2, 0));  //0 表示起始状态  QRect(x, y, weight, high)
    line4Animal->setKeyValueAt(0.5, QRect(21, 0, 2, 15)); // 0.5表示中间状态
    line4Animal->setKeyValueAt(1, QRect(21, 15, 2, 15));  // 1表示结束状态
    line4Animal->setLoopCount(-1);
    line4Animal->start();
}


BtForm::~BtForm()
{
    delete ui;
}


void BtForm::setIconAndText(const QString &btIcon, const QString &btText, int pageid)
{
    //设置按钮的图标
    ui->btIcon->setPixmap(QPixmap(btIcon));

    //设置按钮的文本
    ui->btText->setText(btText);

    //将按钮和QQMusic中的page页面进行关联
    this->pageId = pageid;
}

int BtForm::getPageId() const
{
    return pageId;
}


void BtForm::clearBackGround()
{
    //这个会清楚上一个按钮点击的背景效果，恢复为之前的样式
    ui->btStyle->setStyleSheet("#btStyle:hover{background-color:#D8D8D8}");
}


void BtForm::showAnimal(bool isTrue)
{
    if(isTrue)
        ui->lineBox->show();
    else
        ui->lineBox->hide();
}

void BtForm::mousePressEvent(QMouseEvent *event)
{
    //1, 当按钮按下之后，需要修改其背景颜色
    ui->btStyle->setStyleSheet("#btStyle{background-color:rgb(30, 206, 154);}");

    //2,当按钮按了之后，需要切换bodyright中的page页面
    //a, 什么时候切换页面
    //b, 谁去完成页面切换
    //c, 按钮和page页面的对应关系

    emit btClick(pageId);
}
